#include "key_scan_cfg.h"
#include "user_cfg.h"

#define KEY_K1_PORT             GPIOF
#define KEY_K1_PIN              GPIO_Pin_7
#define KEY_K2_PORT             GPIOA
#define KEY_K2_PIN              GPIO_Pin_10
#define KEY_K3_PORT             GPIOA
#define KEY_K3_PIN              GPIO_Pin_9
#define KEY_K4_PORT             GPIOA
#define KEY_K4_PIN              GPIO_Pin_11
#define KEY_K5_PORT             GPIOF
#define KEY_K5_PIN              GPIO_Pin_6
#define KEY_K6_PORT             GPIOA
#define KEY_K6_PIN              GPIO_Pin_12
#define KEY_K7_PORT             GPIOB
#define KEY_K7_PIN              GPIO_Pin_8

// ==================================================================
/// @brief  : 按键驱动底层io配置
// ==================================================================
void Key_Init_Port(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOB,ENABLE);
    GPIO_InitStructure.GPIO_Pin = KEY_K1_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(KEY_K1_PORT, &GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = KEY_K2_PIN;
    GPIO_Init(KEY_K2_PORT, &GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = KEY_K3_PIN;
    GPIO_Init(KEY_K3_PORT, &GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = KEY_K4_PIN;
    GPIO_Init(KEY_K4_PORT, &GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = KEY_K5_PIN;
    GPIO_Init(KEY_K5_PORT, &GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = KEY_K6_PIN;
    GPIO_Init(KEY_K6_PORT, &GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = KEY_K7_PIN;
    GPIO_Init(KEY_K7_PORT, &GPIO_InitStructure);
}

// ==================================================================
/// @brief  : 获取当前有效按键索引值
///
/// @returns: 返回当前有效按键索引
// ==================================================================

key_u8_t Get_KeyIndex_Port(void)
{
    uint8_t cnt = 0, value = 0;
    if (!GPIO_ReadInputDataBit(KEY_K1_PORT, KEY_K1_PIN)) {
        value = 1, cnt++;
    }
    if (!GPIO_ReadInputDataBit(KEY_K2_PORT, KEY_K2_PIN)) {
        value = 2, cnt++;
    }
    if (!GPIO_ReadInputDataBit(KEY_K3_PORT, KEY_K3_PIN)) {
        value = 3, cnt++;
    }
    if (!GPIO_ReadInputDataBit(KEY_K4_PORT, KEY_K4_PIN)) {
        value = 4, cnt++;
    }
    if (!GPIO_ReadInputDataBit(KEY_K5_PORT, KEY_K5_PIN)) {
        value = 5, cnt++;
    }
    if (!GPIO_ReadInputDataBit(KEY_K6_PORT, KEY_K6_PIN)) {
        value = 6, cnt++;
    }
    if (!GPIO_ReadInputDataBit(KEY_K7_PORT, KEY_K7_PIN)) {
        value = 7, cnt++;
    }
    if (cnt > 1) {
        value = 0;
    }

   return value;
}


// ==================================================================
/// @brief  : 按键驱动时基获取
///
/// @returns: 返回ms时基
// ==================================================================
key_u32_t key_clk;
key_u32_t Get_Clk_Port(void)
{
    /** key_u16_t clk; */
    /** return clk; */
    return key_clk;
}
